package com.moorror.cola.strategy.plugin.bean;

import com.intellij.icons.AllIcons;
import com.intellij.psi.PsiElement;
import com.moorror.cola.strategy.plugin.utils.ColaStrategyPluginPsiUtils;
import lombok.Data;

import javax.swing.*;

/**
 * @Author jiyanghuang
 * @Date 2022/3/14 11:10 PM
 */
@Data
public class PsiElementWrapper {

    /**
     * 跳转到的元素，可以不同的类型来做细化
     */
    protected PsiElement element;

    /**
     * 应该是类与方法的组合
     */
    protected String faceClassName;

    /**
     * 表示是否为空列，因为当只有一个时，空列与正常的 element 是一样的，无法区分所以通过
     * false 来区分
     */
    protected boolean blank = false;

    private String desc = "";

    public PsiElementWrapper(PsiElement element) {
        this.element = element;
    }

    public String renderText(){
        return ColaStrategyPluginPsiUtils.className(faceClassName);
    }

    public String renderContainerText(){
        return " <- " + desc;
    }

    public boolean filterRemove(boolean globalFilter){
        return false;
    }

    public Icon getIcon(){
        return AllIcons.Actions.ShowReadAccess;
//        return IconLoader.getIcon("/icons/codegen.png");
    }

    public static PsiElementWrapper ofBlank(PsiElement element){
        PsiElementWrapper psiElementWrapper = new PsiElementWrapper(element);
        psiElementWrapper.setFaceClassName("阻止行立即跳转[无其他意义bus]");
        psiElementWrapper.setDesc("空实现");
        return psiElementWrapper;
    }
}
